package modelo;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.util.ArrayList;

import vista.VentanaProyecto;

public class Laboratorio {
	
	
	
	private ProyectoDAO proyectoDAO;
	private ArrayList<Proyecto> proyecto;
	private ArrayList<GrupoColaborativo> grupos;
	private ArrayList<Colaborador> colaboradores;
	private ArrayList<LineaDeInvestigacion> lineas;
	private GrupoColaborativo gc;
	
	//Agregando los DAO
	private ColaboradorDAO colaboradorDAO;
	private TematicaDAO tematicaDAO;
	private LineaDAO lineaDAO;
	private GrupoColaborativoDAO grupoDAO;
	

	
	public Laboratorio () {
		super();
		this.proyectoDAO = new ProyectoDAO();
		
		
		this.gc = new GrupoColaborativo();
		this.proyecto = new ArrayList <Proyecto>();
		this.grupos = new ArrayList <GrupoColaborativo>();
		this.colaboradores = new ArrayList<Colaborador>();
		this.lineas = new ArrayList<LineaDeInvestigacion>();
		
		this.colaboradorDAO = new ColaboradorDAO();
		this.tematicaDAO = new TematicaDAO();
		this.lineaDAO = new LineaDAO();
		this.grupoDAO = new GrupoColaborativoDAO();
		
		//cargarGrupo();
	
	}
	//-----------------------------------------------------------------METODOS DEL VECTOR DE LINEAS
		
	// ELIMINAR LINEA
	public void eliminarLinea (String cod){
		lineaDAO.eliminarLinea(cod);
	}
	
	//MODIFICAR LINEA
	public void modificarLinea (LineaDeInvestigacion linea){
		lineaDAO.modificarLinea(linea);
	}
	
	//GUARDAR LINEA
	public void guardarLinea (LineaDeInvestigacion linea){
		lineaDAO.guardarLinea(linea);
	}
	
	//CARGAR LISTADO LINEA
	public ArrayList<LineaDeInvestigacion> cargarListadoLinea(){
		return lineaDAO.cargarListadoLinea();
	}
	
	//BUSCAR UNA LINEA
	public LineaDeInvestigacion buscarLinea(String cod){
		return this.lineaDAO.buscarLinea(cod);
	}
	
	
	//SIZE DE LINEAS (TAMANO DEL VECTOR DE LINEAS)
	public int contarLineas(){
		return this.lineas.size();
	}
	
	// GET DEL VECTOR LINEAS (RETORNA EL VECTOR DE LINEAS COMPLETO)
	public ArrayList<LineaDeInvestigacion> getLineas() {
		return this.lineas;
	}
		
	//SET LINEA
	public void setLinea(int fila,LineaDeInvestigacion linea){
		this.lineas.set(fila, linea);
	}
		
	//GET LINEA (RETORNA POSICION I DEL VECTOR DE LINEAS)
	public LineaDeInvestigacion getLinea(int i){
		return lineas.get(i);
	}

	//-----------------------------------------------------------------METODOS DEL VECTOR PROYECTOS
	public void agregarProyecto (Proyecto proyecto){
		this.proyectoDAO.registrarProyecto(proyecto); //Agrega un nuevo proyecto
		}
	
	public ArrayList<Proyecto> getProyectos() {
		return this.proyectoDAO.Proyectos(); 			//Retorna el vector completo de Proyectos
		}
	
		
	public Proyecto getProyecto(int i){
		return proyecto.get(i);  		// Retorna la posicion I del vector de proyectos
		}
	
		
	public ArrayList<Proyecto> Proyectos() {
		return proyectoDAO.Proyectos();
	}
	
	public Proyecto buscarProyecto (String codig)
	{ 	
	return proyectoDAO.buscarProyecto(codig);
	}
	
	public void eliminarProyecto(String codigo){
		proyectoDAO.eliminarProyecto(codigo);
	}
	//-----------------------------------------------------------------METODOS DEL VECTOR DE GRUPOS
	
	// ELIMINAR GRUPO
		public void eliminarGrupo(String cod){
			grupoDAO.EliminarGrupo(cod);
	}
		
	//GUARDAR GRUPO
	public void guardarGrupo (GrupoColaborativo grupo){
		grupoDAO.GuardarGrupo(grupo);
	}
	
	//MODIFICAR LINEA
	public void modificarGrupo (GrupoColaborativo grupo){
		grupoDAO.modificarGrupo(grupo);
	}
		
	//CARGAR LISTADO GRUPO
	public ArrayList<GrupoColaborativo> CargarListadoGrupo(){
		return grupoDAO.CargarListadoGrupos();
	}
		
	//BUSCAR UN GRUPO
	public GrupoColaborativo buscarGrupo(String cod){
		return this.grupoDAO.BuscarGrupoColaborativo(cod);
	}
	
	//SIZE DE GRUPOS (TAMANO DEL VECTOR DE GRUPOS)
	public int contarGrupo (){
		return this.grupos.size();
	}
	
	// GET DEL VECTOR GRUPOS (RETORNA EL VECTOR DE GRUPOS COMPLETO)
	public ArrayList<GrupoColaborativo> getGrupos() {
		return grupos;
	}
	
	public void setGrupos(ArrayList<GrupoColaborativo> grupos) {
		this.grupos = grupos;
	}
	
	//SETEAR UN GRUPO EN UNA FILA
	public void setGrupo(int fila,GrupoColaborativo grupo){
		this.grupos.set(fila, grupo);
	}
	
	//-------------------------------------------------------------------METODOS DEL VECTOR DE COLABORADORES
	//METODOS DE BASE DE DATOS
	public void agregarColaborador(Colaborador colaborador)
	{
		this.colaboradorDAO.guardarColaborador(colaborador);
	}
	
	public void modificarColaborador(Colaborador colaborador)
	{
		this.colaboradorDAO.modificarColaborador(colaborador);
	}
	
	public void eliminarColaborador(String cedula)
	{
		this.colaboradorDAO.eliminarColaborador(cedula);
	}
	
	public Colaborador buscarColaborador(String cedula)
	{
		return this.colaboradorDAO.buscarColaborador(cedula);
	}
	
	public ArrayList<Colaborador> consultarColaboradores()
	{
		return this.colaboradorDAO.consultarColaboradores();
	}
	//----------------------------------------------------------------------METODOS TEMATICA
	
	public void agregarTematica(Tematica tematica)
	{
		this.tematicaDAO.guardarTematica(tematica);
	}
	public void modificarTematica(Tematica tematica)
	{
		this.tematicaDAO.modificarTematica(tematica);
	}
	public void eliminarTematica(String codigo)
	{
		this.tematicaDAO.eliminarTematica(codigo);
	}
	public Tematica buscarTematica(String codigo)
	{
		return this.tematicaDAO.buscarTematica(codigo);
	}
	public ArrayList<Tematica> consultarTematica()
	{
		return this.consultarTematica();
	}
	
	//SIZE
	public int contarColaborador(){
		return this.colaboradores.size();
		}
	
			
	/*public ArrayList<Colaborador> getColaboradores() {
		return colaboradores;
		}
	public void setColaboradores(ArrayList<Colaborador> colaboradores) {
		this.colaboradores = colaboradores;
		}
	
	public Colaborador obtenerColaborador(int pos){
		return colaboradores.get(pos);
		}*/
	
	//Metodo agregar un colaborador
	/*public void agregarColaborador(Colaborador colaboradores)
	{
		this.colaboradores.add(colaboradores);
	}*/
	
	/*public void setColaborador(int fila, Colaborador colaborador)
	{
	 this.colaboradores.set(fila, colaborador);
	}
	
	public ArrayList<Colaborador> ColaboradoresDisponibles()
	{
	 ArrayList<Colaborador> colaboradoresdisponibles = new ArrayList<Colaborador>();
	 for (int i=0; i<contarColaborador(); i++)
	 {
	  if(colaboradores.get(i).getEstatus()=="A")
	  {
	   colaboradoresdisponibles.add(colaboradores.get(i));
	  }
	 }
	 return colaboradoresdisponibles;
	 
	}
	
	
	public void RemoverElemento()
	 {
	  for(int i=0; i<contarColaborador(); i++)
	  {
	   if(colaboradores.get(i).getEstatus()=="I")
	   {
	    colaboradores.remove(i);
	   }
	  }
	 }*/
	//------------------------------------------------------CARGADO DE ARCHIVOS DE ARAIS
	
	/*
public void cargarArchivos(){
		
		
		try {

			
			   BufferedReader reader = new BufferedReader(new FileReader("Grupo.txt"));
			   
			   String retornoDeCarro = System.getProperty("line.separator");
			   String linea = reader.readLine();
			      

			     
			   while (linea == "*")
			   {
				  
				   GrupoColaborativo grupoc = new GrupoColaborativo();
				   grupoc.setCodigoGrupo(linea);
				   String nombre = linea;
				   linea = reader.readLine();
				   grupoc.setNombreGrupo(linea);
				  
				   
				   this.grupos.add(grupoc);
					System.out.println("Pas�");	 
					   
					     
					   while (linea != "*")
					   {
						   Colaborador colaborador = new Colaborador();
						   colaborador.setCedula(linea);
						   //String c = linea2;
						   linea = reader.readLine();
						   colaborador.setNombre(linea);
						     //String n = linea2;
						   linea = reader.readLine();
						   //String p = linea2;
						  	colaborador.setApellido(linea);
						   linea = reader.readLine();
						   //String ct = linea2;
						    colaborador.setSexo(linea);
						    linea = reader.readLine();
							 colaborador.setDia(linea);
							 linea = reader.readLine();
							   //String ct = linea2;
							colaborador.setMes(linea);
							linea = reader.readLine();
							   //String ct = linea2;
							colaborador.setAnno(linea);
							linea = reader.readLine();
							   //String ct = linea2;
							colaborador.setTelefono(linea);
							linea = reader.readLine();
							   //String ct = linea2;
							colaborador.setTipoColaborador(linea);
						  
							this.colaboradores.add(colaborador);
						   }
						   linea = reader.readLine();
						    
			   		}// fin while integrantes
					    
										
			   reader.close();
			   System.out.println("Carga Exitosa de Tiendas y Productos");
			   //vp.mostrarMensaje("Carga Exitosa de Tiendas y Productos"); 
			   linea = reader.readLine();
		       }// fin while grupo
		 
			
			
			// fin try tiendas
			
			catch(java.io.FileNotFoundException fnfex) {
				System.out.println("Archivo no encontrado: " + fnfex);}
			catch(java.io.IOException ioex) {
			
		}
					
	}

	
	*/
	
	
	//------------------------------------------------------ CARGADO DE ARCHIVOS
	

}